Repository navigation
Conversation
Commit 1061bcd ("audio: eq_iir: switch to source/sink processing API") placed the memcpy_s() call of eq_iir_pass() inside an assert(). On Zephyr builds without CONFIG_ASSERT, assert() expands to an empty statement and the argument is not evaluated, so no data is copied to the sink. The sink is still committed, resulting in silence. This is hit e.g. on Intel PTL with the HDA topology, where the EQ IIR blob sets all channels to bypass and the pass-through function is used. Playback to PCM0 completes without errors but no audio is heard. Fix by evaluating memcpy_s() outside of assert(). Fixes: 1061bcd ("audio: eq_iir: switch to source/sink processing API") Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Commit 1061bcd ("audio: eq_iir: switch to source/sink processing API") changed the circular buffer wrap in eq_iir_s32_s16_pass() and eq_iir_s32_s24_pass() to use "x + n" and "y + n". These functions already advance x and y in the copy loop, so the pointers were moved forward twice per chunk, skipping input and writing output to the wrong location. Wrap the already advanced pointers, as was done before the conversion. Fixes: 1061bcd ("audio: eq_iir: switch to source/sink processing API") Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
kv2019i
requested review from
abonislawski,
lgirdwood and
piotrhoppeintel
and
a balanced review from Copilot
November 13, 2026 17:46
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The IIR equalizer pass-through changes have no active review issues.
No open issues 🎉
What changed in this PR
Fixes IIR equalizer pass-through regressions introduced during the pipeline 2.0 conversion, restoring sample copying and correct buffer traversal.
Changes:
- Moves
memcpy_s()outside the assertion so copying still occurs when assertions are disabled. - Removes duplicate pointer advances in IPC3 S32-to-S16 and S32-to-S24 pass-through conversions.
| File | Description |
|---|---|
src/audio/eq_iir/eq_iir.c |
Ensures pass-through copying runs independently of assertions. |
src/audio/eq_iir/eq_iir_ipc3.c |
Corrects circular-buffer pointer wrapping after sample conversion. |
Review effort: Balanced
PR 11458: test resultsRun date: 2026-11-13 18:23 UTC Tested commit: c47216d6c123b72114bf9aecc2fdc7d4cc401579 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A few fixes to eq_iir related to pipeline2.0 conversion in commit 1061bcd